<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />        
        <link rel="stylesheet" type="text/css" href="../../css/guide.css" />        
        <script type="text/javascript">var basepath = '../../'; var lang = 'fr';</script>        
        <script type="text/javascript" src="../../js/loader.js"></script>        
    </head>
    <body>     
        <h1>Session</h1>
        <p>
            La classe Session permet de gérer la session en cours. Une session permet de conserver des données en mémoire qui pourront être récupérées et utilisées partout sur le site.
            Par exemple, vous pouvez conserver des identifiants en session pour éviter à l'internaute de se reconnecter à chaque page. 
            Attention cependant à ne pas confondre avec les cookies, qui eux peuvent rester sur la machine même après la fermeture du navigateur, ce qui n'est pas le cas de la session.
        </p>        
        
        <h2>Configuration</h2>
        <p>Les paramètres de Session sont modifiables dans le <a href="../installation/configuration.html">fichier de configuration</a> dans la catégorie [session]. Les options sont les suivantes</p>
        <table>
            <tr>
                <td><strong>handler</strong></td>
                <td>
                    Le type de session à utiliser :
                    <ul>
                        <li>commenté : utilise le type par défaut défini par les options de php</li>
                        <li>files : enregistre les données dans le dossier webapp/cache/session (le dossier sera créé automatiquement)</li>
                        <li>database : utilise la base de données. Cette dernière doit être configurée ainsi que les options pour savoir quelle table utiliser</li>
                        <li>memcache : utilise memcache ou memcached si disponible</li>
                    </ul>
                </td>
            </tr>
            <tr>
                <td><strong>maxlifetime</strong></td>
                <td>
                    Durée maximale de la session. Si le paramètre est commenté PHP-Oxygen utilisera le paramètre par défaut de php
                </td>
            </tr>
            <tr>
                <td><strong>db_config</strong></td>
                <td>
                    <a href="db/configuration.html">Nom de la configuration de la base de donnée</a> à utiliser
                </td>
            </tr>
            <tr>
                <td><strong>table</strong></td>
                <td>
                    Nom de la table à utiliser dans la base de donnée. Par défaut le nom est "sessions". Si la table n'existe pas elle sera automatiquement créée, attention donc à ne pas donner le nom d'une table existante
                </td>
            </tr>
            <tr>
                <td><strong>memcache_host</strong></td>
                <td>
                    L'adresse du serveur memcache. Par défaut 127.0.0.1
                </td>
            </tr>
            <tr>
                <td><strong>memcache_port</strong></td>
                <td>
                    Le port à utiliser pour se connecter au serveur memcache. Par défaut 11211
                </td>
            </tr>
        </table>                
        
        <h2>Méthodes</h2>
        
        <h3>set()</h3>
        <p>Définit une variable en session. Méthode statique.</p>
        <php>
            Session::set('login', 'john');       // Enregistre "john" en session avec la clé "login"        
        </php>
        
        <h3>get()</h3>
        <p>Récupère une variable en session ou renvoi une valeur par défaut. Méthode statique</p>
        <php>
            Session::get('login');          // Retourne null si login n'est pas déjà enregistré
            Session::get('login', 'john')   // Retourne "john" si login n'est pas déjà enregistré
        </php>
        
        <h3>delete()</h3>
        <p>Supprime une variable de la session. Méthode statique</p>
        <php>
             Session::delete('login');            // Supprime la clé login et sa valeur de la session
        </php>
        
        <h3>addFlash()</h3>
        <p>
            Stocke une variable (message "flash") en session pour la requête suivante uniquement. Ceci est utile 
            lors du traitement d'un formulaire si vous souhaitez rediriger l'utilisateur et afficher un message spécial 
            lors de la prochaine requête. Le deuxième argument permet de définir un type.
        </p>
        <php>
             Session::addFlash('Votre page à bien été enregistrée');                 // enregistre avec le type par défaut
             Session::addFlash("Vous n'avez pas saisi votre identifiant", 'error');  // enregistre avec le type error
        </php>
        
        <h3>getFlash()</h3>
        <p>
            Récupère un tableau des messages "flash" du type donné. Le deuxième argument permet de définir le type à 
            retourner.
        </p>  
        <php>
             Session::getFlash();           // récupère les messages du type par défaut
             Session::getFlash('error');    // récupère les messages du type error
        </php>        
        
        <h3>start()</h3>
        <p>Démarre une session, si une session existe déjà la méthode ne fait rien.</p>
        
        <h3>getId()</h3>
        <p>Retourne l'identifiant de la session courante.</p>
        
        <h3>clean()</h3>
        <p>Nettoie toutes les varibles stockées dans la session courante.</p>
        
        <h3>destroy()</h3>
        <p>Détruit la session courante et en démarre une nouvelle.</p>
    </body>            
</html>